#include "modbuswig.h"
#include "ui_modbuswig.h"
#include <QFile>
ModbusWig::ModbusWig(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ModbusWig)
{
    ui->setupUi(this);

    QFile qss_file(":/qss/style/stm32.qss"); // 使用资源系统来加载，如果是普通路径，请调整
    if (qss_file.open(QFile::ReadOnly)) {
        QString qss_text = QLatin1String(qss_file.readAll());
        this->setStyleSheet(qss_text);
        qss_file.close();
    }
// 创建 QMovie 对象，并加载 GIF 文件
    QMovie *movie = new QMovie(":/new/img/azzp2-tztrp.gif");
    QMovie *movie2 = new QMovie(":/new/img/2ygxk-qmkd4.gif");

    // 设置 QMovie 到 QLabel
    ui->label_4->setMovie(movie);
    ui->label_7->setMovie(movie2);
    // 启动 GIF 动画
    movie->start();
    movie2->start();
}

ModbusWig::~ModbusWig()
{
    delete ui;
}



void ModbusWig::dataUpSlot(QByteArray jsonString)
{

       // 将 QByteArray 转换为 QJsonDocument
       QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString);

       // 检查 JSON 是否有效
       if (!jsonDoc.isNull()) {
           // 获取 JSON 对象
           QJsonObject jsonObj = jsonDoc.object();
           if(jsonObj.contains("type"))
           {
              QJsonValue value = jsonObj.value("type");
              if(value != 1)
              {
                  return;
              }
           }
           // 解析基本数据
           int type = jsonObj.value("type").toInt();
           int result = jsonObj.value("result").toInt();

           qDebug() << "Type:" << type;
           qDebug() << "Result:" << result;

           // 解析数据数组
           QJsonArray dataArray = jsonObj.value("data").toArray();

           for (const QJsonValue &value : dataArray) {
               QJsonObject dataObj = value.toObject(); // 将 QJsonValue 转换为 QJsonObject
               int key = dataObj.value("key").toInt();
               QString val = dataObj.value("val").toString();
               qDebug() << "Key:" << key << ", Value:" << val;
               if(key ==101){
                   ui->tem_val->setText(val+"°C");
               }
               if(key ==102){
                   ui->hum_val->setText(val+"%");
               }
               if(key ==103){
                   ui->lux->setText(val+"lux");
               }
               if(key ==104){
                   ui->hum_soil->setText(val+"%");
               }
               if(key ==105){
                  ui->CO2->setText(val+"%");
               }
               if(key ==106){
                   ui->O2->setText(val+"%");
               }
           }
       } else {
           qWarning() << "Failed to parse JSON.";
       }


}

